package cn.fay.chapter08;

public class Games {

	/*工厂设计模式
	 *
	 */
	public static void playGame(GameFactory factory){
		Game s=factory.getGame();
		while (s.move()) 
			;
		
	}
	public static void main(String[] args) {
		playGame(new CheckersFactory());
		playGame(new ChessFactory());

	}

}
interface Game{ boolean move();}
interface GameFactory{ Game getGame();}

class Checkers implements Game{
	private int moves=0;
	private static final int MOVES=3;
	@Override
	public boolean move() {
		System.out.println("Checkers move "+moves);
		return ++moves!=MOVES;
	}	
}
class CheckersFactory implements GameFactory{
	@Override
	public Game getGame() {
		return new Checkers();
	}
}

class Chess implements Game{
	private int moves=0;
	private static final int MOVES=4;
	@Override
	public boolean move() {
		System.out.println("Chess move "+moves);
		return ++moves!=MOVES;
	}
}
class ChessFactory implements GameFactory{
	@Override
	public Game getGame() {
		return new Chess();
	}
}